class A extends Thread
{
    public static int tickets = 10000;
    public static String str = "flag";
    public void run()
    {
        while(true)
        {
            synchronized(str)          //括号内的对象不能是 this
            {
                if(tickets > 0)
                {
                    System.out.printf("%s正在卖出第%d张票\n",Thread.currentThread().getName(),tickets--);
                }
                else
                {
                    break;
                }
            }
        }   
    }
}
public class TestTickets
{
    public static void main(String[] args)
    {
        A aa1 = new A();
        aa1.start();
        A aa2 = new A();
        aa2.start();
    }
}
/*
保证线程切换不破坏某一段代码块的连续性
使用直接继承 Thread 类的方法 创造两个对象，（可以是线程进入准备阶段），
使用静态的的属性保证不会重复创建，（或说多对象使用同一个属性）
*/